package com.tuliyou.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;

/**
 * 院校专业招生数据实体类（对应数据库uni_major_enrollments表）
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("uni_major_enrollments") // 指定对应数据库表名
public class UniMajorEnrollment implements Serializable {

    /**
     * 主键ID（自增）
     * 对应表中id，BIGINT类型
     */
    @TableId(value = "id", type = IdType.AUTO) // 自增主键
    private Long id;

    /**
     * 院校代号
     * 对应表中university_code，非空，外键关联universities表
     */
    @TableField(value = "university_code", exist = true)
    private String universityCode;

    /**
     * 专业名称（含大类招生名称）
     * 对应表中major_name，非空
     */
    @TableField(value = "major_name", exist = true)
    private String majorName;

    /**
     * 招生年份
     * 对应表中enroll_year，非空（如2023）
     */
    @TableField(value = "enroll_year", exist = true)
    private Integer enrollYear;

    /**
     * 招生省份（默认河北）
     * 对应表中province，默认值"河北"
     */
    @TableField(value = "province", exist = true, fill = FieldFill.INSERT)
    private String province = "河北";

    /**
     * 科目组合（仅物理类）
     * 对应表中exam_type，ENUM类型，默认"PHYSICS"
     */
    @TableField(value = "exam_type", exist = true, fill = FieldFill.INSERT)
    private String examType = "PHYSICS";

    /**
     * 学历层次（固定本科）
     * 对应表中education_level，ENUM类型，默认"本科"
     */
    @TableField(value = "education_level", exist = true, fill = FieldFill.INSERT)
    private String educationLevel = "本科";

    /**
     * 当年最低录取分
     * 对应表中min_score，可为空
     */
    @TableField(value = "min_score")
    private Integer minScore;

    /**
     * 当年最低省排名（核心推荐依据）
     * 对应表中min_rank，可为空
     */
    @TableField(value = "min_rank")
    private Integer minRank;

    /**
     * 当年招生计划人数
     * 对应表中plan_count，可为空
     */
    @TableField(value = "plan_count")
    private Integer planCount;

    /**
     * 当年实际录取人数
     * 对应表中actual_count，可为空
     */
    @TableField(value = "actual_count")
    private Integer actualCount;

    /**
     * 招生备注与专业介绍
     * 对应表中description，TEXT类型，可为空
     */
    @TableField(value = "description")
    private String description;

    /**
     * 逻辑删除标记（0未删除，1已删除）
     * 对应表中is_deleted，默认0
     */
    @TableLogic // MyBatis-Plus逻辑删除注解：自动过滤is_deleted=1的记录
    @TableField(value = "is_deleted", fill = FieldFill.INSERT)
    private Integer isDeleted = 0;

    /**
     * 序列化版本号（实现Serializable接口，避免分布式场景序列化异常）
     */
    @Serial
    private static final long serialVersionUID = 1L;
}
